{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Laplace transforms in SymPy\n", "\n", "The Laplace transform is \n", "\n", "$$\\mathcal{L}\\{f(t)\\} = \\int_0^\\infty f(t) e^{-st} \\mathrm{d}s $$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import sympy\n", "sympy.init_printing()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define some symbols to work with. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "t, s = sympy.symbols('t, s')\n", "a = sympy.symbols('a', real=True, positive=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Direct evaluation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start with a simple function" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACYAAAATCAYAAAD8in+wAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABl0lEQVRIDc2V303DQAyHG8QAldig3YAZ6AaUFboBFW95Q7BB2QDRDdoNoN2gbAB0g/B9x90phYcGiYRYcvwnd/EvPttXVFU16AuVZbkByxT5WvQFGGCGgPpAFibqxEdP6AIc24Slk4zFbNwQdAebmTN44ZHBI/QZfAnv4TX82DqwCMramUQg5+jaY21kIHR9t8ilji6O8o446zoI7P03WywCNluBTpPSRPIxNxvoGM1qga9YPK1tsJYyAP2s1SdYjzLQb4FZnJO496ggkPUk5yNDd/9TfDeIYHK2on/U6lHGoDkL2AIwOwI1k4nGKM/RsEnan2OAEYhHaXG/w3ahXbnj3QNyEAHbma55wd4edCUO0y7iN1jyT+b4818HbwePXGME988WsFdCGHRIUy/QOdwpBWAAML0r2G7K0xdbsPo7p5QxMyUNAXb9pYY6WGEftHZ817pIwMzMEhD3rUdsGKA+LlK7Ntza7rIEzLliC/8gsujl2jmlo/SacY5kApCjQ3+TKyjv+yslzzGAWPRh8MWP2wj/VnOf2FWXc8yXYVgAAAAASUVORK5CYII=", "text/latex": [ "$\\displaystyle e^{- a t}$" ], "text/plain": [ " -a⋅t\n", "ℯ " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = sympy.exp(-a*t)\n", "f" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can evaluate the integral directly using `integrate`:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAASsAAABYCAYAAACtZdFvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAXaElEQVR4Ae2dX5LctBbGO1NZQJgsgLphB5CsgOH9PhCyAmAHUPPG2xTsALKCCTzct/sQsoKE7ABusYAMs4Pc76fRcWS3ZMtuu9vTc06VW7b+HB19tj4fybL73vv37zc18sMPPzxQvjOFv9Xk9zyOgCPgCMyJwEmNMhHUN8r3j7Zva/J7HkfAEXAE5kZgkKxEVD+rUrbftP/F3Aa4PkfAEXAEahC435dJ5PSd0vGqftf+0768+0yTLQxJv9L2rfY/22fdXpcj4AgcBoEiWYkEzmTSj9GsNRHVp7IJ2xBIy8URcATuAAJ9w0CGfshPIq7rm93D/8qWt9p+kiV/Hd4at+C2IqBr6NFtsH2KnTVlavKsDZ+sZ6WG4LnYybxYm9Fuz3EgoOuMKQa8Y25Av++5VUwhvDxAvdXNlG1Mw3BTHntjfqSyX2rjpl6S1bRfdsI1L7UZ53Rt/kR5/jrpxsZje+rHRbQar6pgq0ffQgR0Xf0hs6+0QVKQhg3tb2Fr5jdZeHwprQ8Vjl4qpDKB+BVyM1i1yEZuVt9rY+75E22Q6D2FjOjuxS2QdYmsmBdC3twE/usIzIeALsDgUSmkI3IzJPRrLUIsXOjA5wrpxJNEZfGq6Pjo2ouoLry5P7SVPKSsHcqPnVwHEDQP87I2Z4eBKmCV/ZnV7pGOwG4IsATmLSp0YXLXXM0DHGxagfBgy+aMdzEHHeiykdIuuopldQ65+UCseHSf6xjiqZJO3i90jEeFs7RFWCXPqqoiz+QI7IAAQ0CXPAJfqcP+kk+qj4060LXV8eu1lHNK73facGgYvn2mffOQyoUKKSprDhI5TuPWyl3yrCxTNUNaAQ8dAUcgjwAdUlvvZLnSGQr15slrL8aiizWJO5MfNcg+iO9cG3b+rGOIag7BM2OS3WRrDnOIrKzgakKBAwPj1tIYTj5u7juFfU8+lMXl0AjoHOHec6GHC1HH3EE3CsMwUCEdgfNp0w90hF8VbxPGlCOda4Cn1HTEJ9qIf6p8O3Vylbenk1K3eciP5ELx4aatsKr+mI9rFHuwlU5I2/5SGg8T+jo4Q+TQXoVFkY5w3ccM6PteccHOTiF0oXMnspJuOzcBg4E2dEyoOnysXGGOTrqZt7qiTm1Nm+5XqVlRJhnPBTB54nFFTblzpujcMU8FqfxK4xU2c1Xah8iIZ96iIR3t07k/1cZcBh2P4QbvqdJByce8DI/46USTO6R04ilAAOgP9StE9yvitG10PFi/8tAOyOkj7YeOphB7IRNeWWs6n+JyQqel3qJIB/rRZ/N+RqK5uSmIn/RJojogqefawg1Cx7k6JulOC0lv600UHW8R+klawPcdgQMiAFHRmRuiirZwY/pR8ZCACfNdZ4qz/BDDZKIypZkQmyBKOmoqffXjOeJBpaQEyTVeQ6oosw85oD8r0RbaHogqZkI3S0Fygq6u/bl82bhOO7J59hU5m2elRtV9a2ZfLVuwHrWVdSAuMyEgPCEiOtTrrkqlsdaP6GfarINCBA2pKT0lBvKOFulg+QTbRvsQBh5O6cX92eun3iinCgfbIxvxriBThkwlO1EJTrRnskg/3jDnB28O75Obxyw3B+mp5o05yco78OTL4c4XtDt/XydNPSsAK3ofU9FUx6FT0xkhjEttW+SpOJNS/QzhGLqm8y3Yjt6dRXrx2piftaHvhmNtwXPLVFBFfplyrSjph/Rs3RZrwBheMsG+01yxylfzxknLogMcyFi7UA9Qe77KNdqUt/RoYs1L6vMALI81uo/YLE91qHPOnNX/tDGhjyeBl9WtM9VXqp/FrXgdz6UDDwTvZ4wnAgn24bCRTjwcOrlNxrOEoFSG+BKxKmmcqJ7rWH+YU9L+n9poX6n+cRX05B7yrD7uKbtzkho49d2nneseUFDzbtWACk+uRUDXgb3WRecLQzErq7SzuE+nX1LQ/4vqY37JBK8kiOLxjuiofQRGXuxtnmASMVLQn72Bq268M1aJG1FgK8PAvqEUbRiyWVnGi+rFq8Kr4ykqK9fD3JzC67HaVAayY74PsfZ/neo6mGclI7iTTXr3KTRnwR/ZFi5YhZwEl/kR4MLs3ok/VxwLGCGFVOig9iTQ4nPlLW3O0GyhPutA6O+r/1rpeBphYl4hNz7y18pbZWQ5Rk4gwtaTQummH0Gy1JsTnrKhczFR3dQPgTKP9kr7htuYOsEMj5GNp8R4g62HBvdy32BXZmNqxqizTKSlVksnJ49GtR5XdvIYUZAXUiuNydNis+6rTsAa9frArAYcmTLhyUXM3ZNOx3nFi3qt+DDvoRBC4Dxbx+OYeRG7eVCOR+d0UPIQf6n0ljemuEFRGUiQuSXTbbYxT2XeDdc+9lIfJEGnH6xfOrluuh0WnYNzPCpLOTyz4D1pv5GYBga0HfwQvL1iH1Uac0v049DOUEI/Om613+IPFcoeOIdlK3Y+OPfYzlKSQLb3D2QcQLXuEKkdMg6i4rMQgaAUhnUqaZ5d96WTk83KXk5kiTSxEVsXWVsivXdKhDMXXbO2qtt4pdOhi1grnQu51em6OqYe99jGNZjeKHvrlx68iwuFgUAVcp2daoOE8B422oqT0koLTz8V4pmFTqpyQeJxK87ScqHyB29QYa/NubIHiOO8v+mr96QvccE03P3i3UD1YnggM+XjJPc2omunyhSJkLxRJ4TIhWR3KJJaonzYiK3FPK0CfnCnEdB1gtezUdh4etoP81wxjhtf3zIDw2+uGyQki67Vi/DpDmXhAJ58NuS8d89KleNSD034QQ5XEWEuANx1JhabiyCmlYJwRyklRgC4g2HLkGArHlgfuQ7p8PS7gQA3Veaotryi2Hw64MUQFCpPx+WaR9dQX8mqo6wSKE+dk0Xl6YutuaMKZTxNbUimIn8ri8rioNA3WyOeIbKa9DRQlcHmjDeRKx2nJGOPW29S87/cEVjLwfwBwvj9Ouzt/wcXGpudrPaP/a2qUdcrXhQdjGv3mcJ3sQEPFdLpebpV24kZLvOEssYTU7YtYXSxE1GhUfbS77bmz0hbQlQfJAt/MFfV6vNDZPX3WINUASAxkYjnAkOea0vJ6jHp2oqicuRPyxTz7iEB0sW7czkuBCAS895na5muXTpYOsc1STd6tDGfyhqq4hxXTjllFE/ZPq9skfbn7KmNk70QFU8DA0HH443C0I4hsqqtJ81HhSyIg5BeKOxOqHKHmf0iSQ2YeR9baZPLESGg63IUARyi6bGTjrazpm01efbZZtlDH4MzICucHATPsCH+JcgK5a+0UTFPP3DnUoY/VXzLvdNxI8pryyaauO6O8jRL9LVPPV0yeax4nsqkwuPgKUM5bIdgXRwBR2A5BJgXo58RNqI+2wxlZyUrKYY0mMHnLXj2IQwmyqrvDirXEJHKDYryN42xzIpjcnLqWN/UWNhLrpbJQ0fAEZiOgPrrR0OlT4YyjEyHnJiT2qhyPBLmnbprPBhW3SZPBVtv07BV5ro4AseHwKyeleBhFv+BiMpWn7M6+W0HNkisO2zrZFn2UDZRPx7ZmTYe72J36WujeFbpMFaHLo6AI7BvBGYlK3X6mjkhyOtJTUOlj4m24KmRv1L/oGrpgXyaibuBAjyK7hLuQBFPdgQcgbkRmHsYWGPfpTJBQjXC41cWyEGCY9Z6zOkJ4X11J+trbPc8joAjMCMCeycrEU/wUhTWEBZP8FizxRM/SK5KlH9r0r2qYCeT9IThqsLuvFsnpx86Ao7A0ghskZU6Zjr5fbWQAcwR9RKK7GD1Lk8WyceQDQ9n30K92OriCDgCB0Zgi6xkT/Amol1zDqeapoqAGNYxsZ3W1aTHHTypM+Vh6QMvE1cvf+gqmnIcbcPGmnm4KVV4GUfAERiBQG6CPZ3QXnJiuffdJ5HEoV+3YejZ6/2NwNmzOgKOwI4I5DwrW0y5KFmIjK5le3j3acc2zF5cttW8WzV7va7QEXAEygi0vhSqTsp8FR+6Q5qv9t0c+q8j4Ag4AodDoDsMPI+m8OeRk56AqZx91I6vLrR0RDLk21CQIh+6X3KYeThUvWZHwBGYHYFmGCjiYLKb4Q/Ds6/H1gQRaeMJHk8QmZjnJWb+8QK9G4VMlD/X9kb7TJafKrSV7jp0cQQcAUegjEAYBoo08HR425lXS7pfSSiXTlKkY+u7O4qzdwVZAsCwsvW5GB1DYHhgizx1TMzzXUfAEbjlCJyIKIyoIIx/7UAceGQtkS4m69HLk7Wct8YwsWZxqLK5OAKOwF1GgGEgc0gM1fjo1RbhzAAOw0L0MkTsCvW6V9VFxY8dAUdgCwE8KxY9MofE/NIuc0h8a73lJekYj4qNl4HDB/EUhye3iSFLF3ySHUBcHAFHoBeBZumCSANSgazCy8O9pQqJ0kF5XjgOhKQwfIud7Eoj7lwb81R4WnhUfECffRdHwBFwBHoRaMiKXCIO/hyBoZmvsQIQF0fAEVgNAsxZpWKvl+Tml9J8vu8IOAKOwF4RaJGVPCuezjEsS7/2uVeDvDJHwBFwBHIItMgqZngRQ/OycuWOPk7E3SxoXVNj12rXmjByW44TgdacFU1UZ0i/jMm/1Ow8AS4dzIOxMJQ5Mf6d9mIOvdKziMi2B1L8j8JR/7SziDGJ0rXalZjou47AYgjkPCvWRZk0n4uxiIkhq+NZx8USCZ4Y8lRwzQJhr3FJxVrtWvO5dNuOBIHui8w0K12kiUe0k4igICe++GkeGuu6qj9RvFPlmcLRO4Es8fLwoPD0WGKBjbSX4W9YXqFjvhJ6qXBvxBXrxDaEtWu8VH5wu27M8V9H4HAIbJGVOsa1tjkt4n3AN6ZQuhkOHkRUN+SEl8fSDMiJRawcs8ZsQ5wCPEA8GIaqi37TizpTUX3YEdamaR/bIFXIaha7ok5eJof8Xuj4Vs5L3sZ2yGYwtxGGf31WYIyVk7EFJuSn45unMKH4rEXwlPg0Teo9Qs7pMRVCFK3P2xC5B+GCfi57zBttvfittJ3skl5eGudtAki79Y89iucJ8J/asGE1Ins4Zy1RnLWDKYvTVuJ6D8AV3MHfZQICW57VBB3FIrqoODnI9U0w369003G3LuRMDazINzLiPciUACDSFikpL3EQ2GSbJ9qG6Xidr7ThYfGJneYLGHPYJZ2bqIfdVrt1TLvpUOmcpQ4PJ7LVOnjJCDuvpfTVxKst3CRneWC1mkbt2ZBFyUptsbv07BeVTjzzSPYJ5kHYlB/iZEttoTx/90X8RiEE1XgvMZ4/jRg1ZxXzV9sW6wYrhqZc0Ozj+TB3xkMJZGe7btQEzNI5xBhdjLf0Q4S0/2hE55Xry2UiAicTy9UWM7I6+N06XijNxaJjOj/eBOSFx2XCu42v4wFzRim5WZ4lQvv210a2USfzZan3M5ddtDnVa20hfq9zdFZxLoznp8ZzzhX3uCNEYF+eVUMStRjqYn2gvJDFu1iGzrrrZ2wYAqKDiU4INHwUUCFzNWYjQzCGjswb8STQ4nV4I4pbwjY6JvNG1Iu81n7q0Q3adVPsw6/Kc7NAL+QHjpAUJH2hbaN0CIpJdtpD3k8Vx6tW1G0enQ7nFemmPuyyuUzOLR5uIFGFeFTPtCFnOrbXvzgfW4SqOGw3L+yJ9rP2x3ycc+rlKTB4h4cMCsECm9AFPmCGLuK5bggpSzpp7J9qozyYEsd1w3APe7GHa4d8tIs4ypKOviDat5smecEFeab4Zm5L+5TL2h1y35GfrUWhtFvgvI/tB/zJTy5Ulg5G5xs1Vlc5LgzKPtV+6LAKOamcRE7awWTNtqWgRDvpIOm8F94b2LbOh/LSsSCLxRfBqg7OI3aFJ7IKgyge214qbEhS+5AKnTsQyk3OD7+xDBHYHq5ThejnZvSJ9iGQIDGe+cAUDz7j3SUG/jDlhTbs4drDhtAPpAMyIZ0bXrAziWu9/K94ylMutQG7GIIHsoplsb01ZaBjbp4Q+EYh7Rm0m7zHLicLN5A7AoBz16gS5aUMJ5oJ5tSzoJMRfzBZs20pKLKTTgUh0KmazqJj9nmS1j0fdJYUax0uJthlyzHSSrgJcc7pnGOE76Q1N1TtWzu4XlKhXpZrNHhoH8LBmzSvjPxX2vDmzEaI3YgQ3PDsnmkLojTi2Bpv6SYl+7ludKfyWAfY/yCN1D43apNauy3/0Yb3F24ZxMOJHCN2onDRufMhuOzcdXNzLSHDnn7WbFsKgQ0pm04cE+nAW8MoxZXiU5077+v8QURcE6+7ypQGiRINERjhcDwkbwoZGgJI6sWz6Qp1PdFmuHC9poTWvX4vlY43xIMXvCSIDpy5VtMh5eCNVWXxGiEwXu3i2qYMJGlem+FVY7eKHreUyOo/sdmlC6EWlVNlbE58ZaHQceyEVZbZV7Y125ZiwAODFrELTzqvea1N3lJ8k2HeHepHugRwE3vzO9azSsuW9q1ehoA2J2h5uQF1r/OuB2R5NyoPmWA/xIQ3+ETHeLDfaPtSG6THkJC0GmFu6lwbpMdNBu/yF23oH2u3ihyvlMjq37HJ/1U45i7XRYoOMpas0LF15+0qPuDxmm3b6CIHc7bunR0CI71FYoqCgFvx6NB2TfzMYtcC9pXE8mylyyY6ci0JpOVNJ965eVBpend/qO3MaUFMFwrfxcLEQTA1+kMRlYeMrmKbQru0D5nyFgMkOtbuoPdYf06WapjAtgvSAK+tivwM+7ZEOtO5ha30PUSs2bZu87u4N/NS4KjN7tpNPAoixpbW1bnTsXRz44MIWhPKKFVaIE3tMkdjMkQalq83TOp9lsuY1J1LzsVBJGD0XJuRE3Fn0sVwkP0awYtseXoqz5ASncxlGV5z2V1j02rznCxoGUNAhKcpYwRX2C7cUE4njTs9F8AuXt4YG0p512ybYUUHx3tqCEfYQfJ0jDfakPRJHOcpEBs4a3/0IlgUjpDPlfcr1YU9qYDtT4pPPT/2H6eZOvt2jXWis4fUC5l0ry3qTYkdDNiKIh1ch5QJ81ZkTOJ4upjqIzmVru5z5e/GcWw41Nqd1nGU+4stXdAJ4GJkYrD1SLcGRZXl7oR3ZUQHWYVJx5ryS+ZZs23WbtnIxc5dnyErOF5qu9ZGxySOid1A/AohNW4EwaPRcXdSXknzSqyTYQ82IcEGxVsHvYnVr+LM04IALnR8rY1r61wbJIwOyjEkQw9DMQgpxCtv85RO+6SH4ZZCri2wsS9uUIayqc5LlTHPSUkfRPFco0ywN+naD16SwhaGOjZ7jSix92ttEDFepg0ltRtsaj1MUvmi3RS4K7IkWXHSudBa613uCrDeTkfAEZgXgZMBdR8PpPclBxddd4U+l7ivvKc5Ao6AI9AgMERWfzc5x++wAvfQc0zjrfYSjoAjsEoEhsiq2mh5UDxhSp9sME5nrsTFEXAEHIGdEbi/s4YPCpicDEO+OCHIk5JVTIp/MNH3HAFH4LYiMJtnJQAgq40IiqckPHH5jGMXR8ARcATmQGA2z0okhVcVCGsOw1yHI+AIOAIpAnN6Vqle33cEHAFHYFYEnKxmhdOVOQKOwFIIzDYMNAM1HGSVNMKq3Ic6thXDIdJ/HAFHwBGYgsCsnpWIiaUL7yAobTwJ5LWB7tv/U+z0Mo6AI3DHERgiqwcj8cGrat7vElGxz8ujj0bq8eyOgCPgCLQQKJGVvSLDKvQqiYQEuVlZK8cLpSwQdXEEHAFHYDICJbKy12R4K7xWSl7YlRSE9wRrFXk+R8ARcAS6CJTIyj4exsf0SyTU1VU6hqh21VHS7fGOgCNwRxDIklWca7LhXPq+Xx8sDPdyAlGZrly6xzkCjoAjMIhAlqxiKVuNnvuS4ZZiERyEBGE92kr0ry9kIPEoR8ARGINAkayid8XyAzwjvjpZIxfKZF9D3EgH+/b/azXlPY8j4Ag4AlkEsl8KTXOKcPjaJ1/9tL8HSpO39pU/XRTK00TWXJWGiFvlPcIRcAQcgRwCg2RFIZENX1KAhPCSmm9ak+biCDgCjsA+ECgOA9PKRVAMB/GSLtN433cEHAFHYF8I/B8Q/Z4ZUmj09gAAAABJRU5ErkJggg==", "text/latex": [ "$\\displaystyle \\begin{cases} \\frac{1}{s \\left(\\frac{a}{s} + 1\\right)} & \\text{for}\\: \\left|{\\arg{\\left(s \\right)}}\\right| \\leq \\frac{\\pi}{2} \\\\\\int\\limits_{0}^{\\infty} e^{- a t} e^{- s t}\\, dt & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "⎧ 1 π\n", "⎪ ───────── for │arg(s)│ ≤ ─\n", "⎪ ⎛a ⎞ 2\n", "⎪ s⋅⎜─ + 1⎟ \n", "⎪ ⎝s ⎠ \n", "⎪ \n", "⎨∞ \n", "⎪⌠ \n", "⎪⎮ -a⋅t -s⋅t \n", "⎪⎮ ℯ ⋅ℯ dt otherwise \n", "⎪⌡ \n", "⎪0 \n", "⎩ " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.integrate(f*sympy.exp(-s*t), (t, 0, sympy.oo))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Library function\n", "\n", "This works, but it is a bit cumbersome to have all the extra stuff in there. \n", "\n", "Sympy provides a function called `laplace_transform` which does this more efficiently. By default it will return conditions of convergence as well (recall this is an improper integral, with an infinite bound, so it will not always converge)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left( \\frac{1}{a + s}, \\ - a, \\ \\text{True}\\right)$" ], "text/plain": [ "⎛ 1 ⎞\n", "⎜─────, -a, True⎟\n", "⎝a + s ⎠" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.laplace_transform(f, t, s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want just the function, we can specify `noconds=True`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAC8AAAAtCAYAAAA+7zKnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACXElEQVRoBe2Z0W3bMBCGbaMDBO0G7gZtR0g2SLtB2g2SR/s13aDJBEG7QTJCmg2SDdpqA/f7FFGwDcFQJZ6KADzgQvKOPP78dVQoer7ZbGYRsl6v3xH3O/qeehUxx6ucQQF5RLxr9Df6AV2iYZIbvAx/FC0LOaeQ/TBZhEWeIHABPwHJnVMU5jtpmcBYmJ+A5M4pCvOdtExgjGT+TYP/ddQ65rkPZhwLPIwpx6hnnQf0Cb3Fd0WZTbKDz4asR6DItOkx/bguBfw4/oaPLswP527cyML8OP6Gj37RzM9Xq1XM3cdwQnuPLP9he1OVueOLzvkCPnM29A5XmO9NVeaOoczz5XSMfs6MuQ0XCp5Z/AxUQyQafAjoFHTnfp5HvMRxifrB/Av9gZ5i/0r534T5xSQe5S16ga1qmafh1/7PxqFTwN/QS+phj574B4W5b+lwI54Gk7cTLmZWg2/AaRS0rCex/oStSoYpS+Y1E9z0Xp8kuaAiybOUNq7kiE779yo+DVPnoDDOJ2TffakvnPB/2XfQfsBe/wTU4dsx0U/2JfeO+kly1qdKDH8w3G87qJsq2k+o36UB/1Iy7pT+S8rBe4axEuvvW0lMH9mfLagIUnV12/LJBv5BwLcDjakLFJ0TQ8bFck5bvM85bwXZznXbdq5zjc6+ccy/yYT5fFE8pgmp76SMdpmvKF1RCw6bj9ufIe9RxdTZX9yzJ+6ve8i91EqD66rB3G5YN841RnPL290bVOZdvbadILSnkDMm8U3j8aJOE8qKdrv5Qz8DmWj0hj3E0uKQM4PPlFRD5C+f97e+uBwMxQAAAABJRU5ErkJggg==", "text/latex": [ "$\\displaystyle \\frac{1}{a + s}$" ], "text/plain": [ " 1 \n", "─────\n", "a + s" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F = sympy.laplace_transform(f, t, s, noconds=True)\n", "F" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will find it useful to define a quicker version of this:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def L(f):\n", " return sympy.laplace_transform(f, t, s, noconds=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Inverses are simple as well," ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def invL(F):\n", " return sympy.inverse_laplace_transform(F, s, t)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEoAAAAYCAYAAABdlmuNAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD2ElEQVRYCd2Y0VEbMRCGz0wK8IQOcAckqSB2B0AqSNxBMrzxxkAH0AGBDqADBjoIHYS4A+f/xO5Fp9PJdia2L+yMvDrdrnb1a3el82A+n1d9oZOTkwf5cij+1Bef3I9BX4ASOEM59Ut84M71ie/0yJmxfHnskT8NVzYSURYtx7L8Q43I2VW7IMXU9tSfqh2ozdTu1K40/s9BwxY2NX+RcnJrjygZBRhqD8BcigPEV7VAOK72TQ+AdEpfbR0gYXM/GF38A6C1j4ivHSjZOFO7k+F4J2fJM76wCEAsEgtQO7O21MIlS7Tuit8UJ7eXkgt+iH9x+TfeWYZLEcdY+CKaStaBOZLwYaRALWoAIlnGAI+o6iS9v9XLa/FzNY/UUaeCXpjcsfi7nFw0z0R997lSHxsPat/VZqsCRUpMcgZzYzLAYmi1A+qjz2IZr3BCrI4mGyf0G+mn57BB4qRvJQ6wyO2rNWR5HxF6F9Fz2mWTqJPP6Qs9o4f+dK2px2JkhBaIRamDYwBHpDkRFff2QNGPga1Mj5qRi2YWWaIj6QdwO4TYOOpk7afLmR76w7UCZQZJOwo0+c6iKNwhKiPn2LmRyXDipU4H8DRep6z6Q+lAb19Y+1cy1KYG6G2psHGl2hU2tZF6ZhynftqE7DSLTB3P2MsPSZfF1QvMSUmG1OGK0CLziQUDcEzv7aEEBBvSsq05iWrsATabR/pei9+Ln4vHhP6kBsqU2Vk+IULOi5MqAJc6qaGNkZ886YLxDSoBBZisqUFaF3NxErMBY/EQ4Q2hPw/c/cYBKAmCKicKp1VcGEGe8W3SJzPOyRX7wSJz14xYhojJFWmXAaB4vT4ec/T3PKIc9aGc8YsWt+dbPac7GU+yiT6Rw+7XVwz1AQCgThc4QP0qlQ0CoVSfmJ6IHTpQQUEOpPmJ4NbIAMF+GtV+YpZOs6LfNrdnUkk2gL0TSfjxHA31ppumBzXzUostRQvOkzZEX44Ijkpz1Blj4KWy6D87UIQXqdYiKRPiWyHZbgFh/rDLyxwwrIuoyVGjPtm8OVlsPXnqhdtnPJsUQZLx3CUvFl13nxoSoiLy6aP6LRAzjhCJHzLjDAUA6Ni83PJz9YpPn8cAlAQIYwo5oHAcQjxn7zYvrzf2+1mW+Ahmt7nXNb7JFnhxpffcj3JERPKPRrh+iHfVZ1J0upH/o3JebmpMALDx9d1wFbu2OZz8I69Rq+j/b7Jkyd9mBlEXSs+rB0rRwBWC+pMr1J2bbvLohSvIqwfKkOCy6pfqTnCSF8jXkfjqa5Qv3iLkQLyraLtoJRm+Tm7E6+/I3+kadf/MVYeTAAAAAElFTkSuQmCC", "text/latex": [ "$\\displaystyle e^{- a t} \\theta\\left(t\\right)$" ], "text/plain": [ " -a⋅t \n", "ℯ ⋅θ(t)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invL(F)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What is that θ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The unit step function is also known as the Heaviside step function. We will see this function often in inverse laplace transforms. It is typeset as $\\theta(t)$ by sympy." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACMAAAAVCAYAAADM+lfpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACVUlEQVRIDa2W0VECQQyG0bEARjvADlAqEDpQrEDpAIcneHOwA+3A0Q6wA2fsAEpw6AD/b82eR25ZTuYys+wm+ZNNstnlWpvNptXkmE6nnTr+UrjjVoM0m83Gctet6bJj+AJ+RBaeDHRm8lfxXx7jeWGuJetpfvC6Xbzts9b8AqZSGSkWkgPA6aPGm0aWhG0LMDGbCha9xlKjU1aKfxI/Qo98KxgJ5wg1h0g1r8VSzn2lx+4Z2x3Ul5xAvhN67MK+RTC2IWceFM5oKyOngx3GBBI6RAONlSW3BTE77NtFMEJMzOAjogHY+jTK/CwMvbLycsdTmXcnK7PYD0+Q2KY49c13iV6U24ysiwQCWj/ySQAjDRKisl3J6L9PzfRKmbAfhGC0uDeNdxp7JRcMAVf6RRvi60MzSfY1E/QuWkrRj8HcGoobUTbAETcrFwyZpxoz+iGIfU8D9p0YDBUgi5voQWs2IRiud47op3UG0Jcu1y+Ykmz72DZFwPtSpqEx4ZqXFXXX5pt+8b69i5BQ+Tb5UtLML3KYyxqnlJgqpoiqtOSj6EUL0GOx/6Yylc0k43iI1t8u7wSeEpN9irb6xfymsOy1ipXhTEN2FjkP31Uq0MSOVLSXkCMKm7Awv7zm/gRQX2h8xQa+EzMXkKjPNQZa526QIAW9arXr/4vKPstXeDo0+/clOuE4R418y+jbZKnRrfMd4zF812CPPB5TjPDQmWPltT2EqN7v/6GP9FBe2S3I8j/2VpVFtGmqMlSEB7Pyt4AiQ+D/KhqjamK2TMd1fAk79pX8Ab6qP3GxnaWSAAAAAElFTkSuQmCC", "text/latex": [ "$\\displaystyle \\theta\\left(t\\right)$" ], "text/plain": [ "θ(t)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.Heaviside(t)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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AEDj8UgsAM3adtttlyRZuXJlneOrVq1KklrvWvxennzyyfzbv/1bBg0alHvvvTetWv3jvtyDDz4448ePz+GHH5777rsvv/rVr3LCCSfUa31z586t9XVRFNn38ofqdSwA0HAeiQWgWdt7772TJAsXLqxzvGZ7zX4b86Mf/ShJMnLkyPUBW6N169YZOXJkkuQ3v/nN5i4XAGhkIhaAZm3AgAFJkhkzZtQ5XrO9f//+m5yrJni33377Osdrtr/55psNXmeNBj67GQBoIBELQLM2ZMiQdO3aNQsWLMjMmTM3GB8/fnyS5NRTT93kXLvttluSZPr06XWO/+EPf0iS7LPPPpu52g2912t5AYDNI2IBaNbatWuX0aNHJ0lGjx5d67WxY8eOzezZszN06NAcfvjh67ffdttt6devXy6//PJac40YMSJJ8pOf/CQTJkyoNfbzn/88d911V1q1apUzzzyzkS4NALClvLETAM3elVdemUcffTRTpkxJ7969M2zYsLz88suZNm1aunXrlnHjxtXaf8mSJZk3b15ef/31WttHjBiRs88+O/fee29OP/30HHbYYdl3333z4osvrn909pvf/Gb69u271S4bANAwHokFoNnr0KFDnnjiiVx11VXp1KlTHnjggbz00ks5//zzM3PmzOy///71mqeqqip33313vve972X48OF54YUXcv/99+ell17Khz70oTz88MO54oorGvnSAABboqpo6AfsAQDv6d13i+x3xUN57bsXJElefOG57LlDxyZeFQC0HB6JBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWACqoaOoFAEALJ2IBoBFVNfUCAKCFEbEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAFRQURRNvQQAaNFELAA0oqqqpl4BALQsIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFgAoqmnoBANDCiVgAaERVqWrqJQBAiyJiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWACooKJo6hUAQMsmYgGgEVVVNfUKAKBlEbEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAFRQkaKplwAALZqIBYBGVNXUCwCAFkbEAgAAUBoiFgAAgNIQsQAAAJSGiAWgFKqrqzNmzJj06dMnHTp0yB577JFRo0Zl4cKFmzXfCy+8kM9+9rPZZ5990qFDh3Tv3j0f+MAH8u1vf7vCKwcAKqmqKApvowhAs1ZdXZ3jjjsuU6ZMye67755hw4blpZdeylNPPZXu3bvn97//fXr16lXv+e6///6cd955Wb16dQYOHJg+ffpk6dKl+eMf/5jOnTvnhRde2Oy1rn5nXfpe+Uhe++4FSZKFf56XXbbvsNnzAQC1tWnqBQDApnzrW9/KlClTMnjw4PzqV79Kly5dkiRjx47Nv/7rv2bUqFF58skn6zXXrFmz8pGPfCTbbbddfv3rX2fo0KHrx959993MmDGjUS4DAFAZHokFoFlbu3ZtdtlllyxfvjwzZszIwIEDa40PGDAgs2fPzvTp03PooYducr7hw4dn0qRJmTBhQk499dSKr9cjsQDQuLwmFoBmbfLkyVm+fHl69eq1QcAmyVlnnZUkmTBhwibn+tOf/pRJkyalT58+jRKwAEDj83RiAJq1WbNmJUkGDRpU53jN9pr9Nuaxxx5Lkhx//PGprq7O3XffnenTp6eqqir9+/fPOeeck+23375CKwcAGoOIBaBZe+WVV5Ike+21V53jNdtr9tuYuXPnJkk6duyYQw45JPPmzas1fvnll+e+++7L8OHD672+Aw88sNbXRavWySnX1ft4AKBhPJ0YgGZtxYoVSZJOnTrVOd65c+da+23MsmXLkiQ33XRT3nzzzfzsZz/L8uXLM2/evJx33nlZsmRJRowYkddff71CqwcAKk3EAtCs1bz/YFVV1UbH62PdunVJknfeeSf//d//nTPPPDNdu3ZNnz598pOf/CSHH354li1blttvv73ec86dO7fWv5kzZ9b7WACg4UQsAM3adtttlyRZuXJlneOrVq1KkvUfu1Ofufbcc8+ccMIJG4x/+tOfTpL85je/2ZylAgBbgYgFoFnbe++9kyQLFy6sc7xme81+G7PPPvskSXr27LnR8TfeeKOBqwQAthYRC0CzNmDAgCTJjBkz6hyv2d6/f/9NzlXzET1vvvlmneNLly5NUr9HdQGApiFiAWjWhgwZkq5du2bBggV1vt50/PjxSVKvz3097rjj0rlz5yxYsCB/+ctfNhiveRrxe32cDwDQ9EQsAM1au3btMnr06CTJ6NGja702duzYsZk9e3aGDh2aww8/fP322267Lf369cvll19ea65OnTrlwgsvzNq1a/OFL3yh1lyPPPJIfvjDH6aqqiqf+9znGvlSAQCby+fEAtDsXXnllXn00UczZcqU9O7dO8OGDcvLL7+cadOmpVu3bhk3blyt/ZcsWZJ58+bV+VE5Y8aMyaRJk/Lggw+md+/eOfLII/PGG29k6tSpeffdd/PNb34zRxxxxNa6aABAA3kkFoBmr0OHDnniiSdy1VVXpVOnTnnggQfy0ksv5fzzz8/MmTOz//77N2iuxx9/PN/85jezww475OGHH87cuXNzzDHHZOLEibniiiu2aK0N+MQfAGAzVBUN+YA9AGCjqteuS7+rHslr370gSbLwxXnZZbsOTbwqAGg5PBILAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAaUVWqmnoJANCiiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACiNNk29AADKae3atZk3b14WL16ct956K127dk337t3Tt2/ftG3btqmXBwC0UCIWgHpbvHhxfvCDH+TBBx/MU089ldWrV2+wT4cOHXLEEUfklFNOyfnnn5/u3bs3wUoBgJaqqiiKoqkXAUDz9vzzz+fqq6/O/fffnzVr1iRJdt555/Tt2zc77bRTtt9++7z11ltZtmxZnnvuuSxdujRJ0q5du4wcOTLXXHNN9t9//6a8CFtN9dp16XfVI3ntuxckSV59cX66b9e+iVcFAC2HR2IB2KgLL7ww//f//t+sW7cuxxxzTM4777wcffTR2Xfffd/zmD//+c954oknctddd+Wee+7Jfffdl8997nO59dZbt+LKm4a7hgGgcXkkFoCN6tSpUz73uc/ly1/+cvbYY48GH//qq6/mP//zP/Pd7343K1eubIQVNi9vr1mX9139/x6Jfe2l+dm5i0diAaBSRCwAG7Vo0aLstttuzWae5k7EAkDj8hE7AGzU/w7Pk08+OT/5yU+2eB4AgM0hYgFokF/+8pd57LHHmnoZAMA2SsQC0Ci++MUvZsiQIU29DACghfHuxABs0kUXXZQjjjgihx12WL2PWbVqVaZOndqIqwIAtkUiFoBNuu2221JVVZUkqaqqyiOPPJJPf/rTOeSQQ9b/69q1a61jFi9enM6dOzfFcgGAFkzEArBJEydOzB/+8Ic89dRTefjhh7No0aL88Ic/zA9/+MP1cduzZ88ccsghOeigg7Jq1ar86le/Sv/+/Zt45QBAS+MjdgBokFatWuXss8/OF7/4xTzzzDN55plnMnPmzPzpT3/KmjVr1u/Xtm3b3HPPPTnjjDOacLVbn4/YAYDG5ZFYABrkuuuuyy677JLhw4dn+PDh67e/8847mTt3bp577rmsW7cuRx55ZHr16tWEKwUAWiKPxAJABXkkFgAal4/YAQAAoDRELAAb9dxzzzWreQCAbZuIBWCjDjrooHzsYx/LnDlzNuv4Z555Jh/5yEdy8MEHV3hlAMC2SMQCsFFXXXVVJkyYkAEDBmTQoEG54YYbMn369Kxdu7bO/VevXp2pU6fmuuuuy8EHH5xDDz00Dz30UK6++uqtvHIAoCXyxk4AbNIbb7yRb37zm/nRj36Ut956K1VVVWnbtm322Wef7Ljjjtluu+3yt7/9LW+++WZefvnlvPPOOymKIl27ds2nP/3pXH755enevXtTX4ytwhs7AUDj8hE7AGxU796988UvfjE333xzrr/++tx7772ZOHFiJk+enPnz52+w/2677ZZhw4bllFNOyTnnnJMOHTo0waoBgJZKxAKwUQsWLMjs2bOTJB07dsyLL76YSy+9NPfcc08WL16cN954I2+99Va6du2aXXbZZZt5xBUAaBoiFoCN6tixY95+++31X3/jG9/IK6+8kve///3p3r27aAUAtipv7ATARu2///6ZPHly3nrrrfXbvJ3Ceyvivw0ANCYRC8BGfexjH8urr76a3r175zOf+UySZOnSpbWilvdW1dQLAIAWxtOJAdioyy67LMuXL8+tt96acePGpaqqKhMnTsxOO+2UHj165JBDDln/b8CAAdl3332beskAQAvmI3YAqJfq6ur87ne/y/HHH7/+o3WeffbZrF69OklSVfWPxxy333779O/fP4ccckgGDhyYT33qU0246q1v1Zp3csDVv1z/ETuvvzQ/3XzEDgBUjIgFoEFatWqVT33qU/n+97+fdevW5dlnn80zzzyTWbNmrf/fpUuXJvlH2K5bt66JV7x1iVgAaFyeTgxAgzz++ONp0+Yffz5at26dgw8+OAcffHA+8YlPrN9n4cKF64MWAKCSRCwADXL00Udvcp+99tore+21V0499dTGXxAAsE3x7sQAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWACooKJo6hUAQMsmYgGgEVVVVTX1EgCgRRGxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELABUUNHUCwCAFk7EAlAK1dXVGTNmTPr06ZMOHTpkjz32yKhRo7Jw4cItmvf5559Px44dU1VVlZNOOqlCq/1/qio+IwBs20QsAM1edXV1jjvuuFxzzTVZsWJFzjjjjPTo0SPjxo3LoEGDsmDBgs2e+/Of/3xWr15dwdUCAI1JxALQ7H3rW9/KlClTMnjw4MyfPz933313pk2blhtuuCGLFy/OqFGjNmve733ve3niiSfy2c9+tsIrBgAai4gFoFlbu3Ztbr311iTJ7bffni5duqwfu/TSS9O/f//89re/zdNPP92ged94441cdtll+eAHP5iPfvSjFV0zANB4RCwAzdrkyZOzfPny9OrVKwMHDtxg/KyzzkqSTJgwoUHzXnTRRXn77bfzf/7P/6nIOgGArUPEAtCszZo1K0kyaNCgOsdrttfsVx8PPfRQ7r777lxxxRXZf//9t3yRAMBW06apFwAAG/PKK68kSfbaa686x2u21+y3KStXrswFF1yQvn375itf+coWr+/AAw+s9XXRun3yoWu3eF4AoG4iFoBmbcWKFUmSTp061TneuXPnWvttypVXXpmXX345jz/+eNq1a1eZRQIAW42IBaBZK4oiSVJVVfcnrtaM18f06dNz66235pOf/GSOOeaYiqxv7ty5tb5esfqdHDTmlxWZGwDYkNfEAtCsbbfddkn+8TTguqxatSpJar1rcV3eeeedfPazn03Xrl3zne98p7KLBAC2Go/EAtCs7b333kmShQsX1jles71mv/eycOHCPPPMM9ltt91y9tln1xpbvnx5kuSpp57K0UcfnS5dumTixIlbuHIAoDGIWACatQEDBiRJZsyYUed4zfb+/fvXa75FixZl0aJFdY4tW7YsTz75ZLp27boZKwUAtgZPJwagWRsyZEi6du2aBQsWZObMmRuMjx8/Pkly6qmnbnSeffbZJ0VR1PnviSeeSJKceOKJKYpi/SOzAEDzI2IBaNbatWuX0aNHJ0lGjx5d67WxY8eOzezZszN06NAcfvjh67ffdttt6devXy6//PKtvl4AoHF5OjEAzd6VV16ZRx99NFOmTEnv3r0zbNiwvPzyy5k2bVq6deuWcePG1dp/yZIlmTdvXl5//fUmWjEA0Fg8EgtAs9ehQ4c88cQTueqqq9KpU6c88MADeemll3L++edn5syZ2X///Zt6iQDAVlJVNOQD9gCAjar5nNjXvntBkuSvLz+fHTu3a+JVAUDL4ZFYAAAASkPEAgAAUBoiFgAqyKt0AKBxiVgAaERVVU29AgBoWUQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAVVDT1AgCghROxANCIqlLV1EsAgBZFxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAAACUhogFAACgNEQsAAAApSFiAQAAKA0RCwAAQGmIWAAAAEpDxAIAAFAaIhYAAIDSELEAUEFF0dQrAICWTcQCQGOqauoFAEDLImIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAKikoqkXAAAtm4gFgEZUVdXUKwCAlkXEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQBQQUWKpl4CALRoIhYAGlFVUy8AAFoYEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAClUF1dnTFjxqRPnz7p0KFD9thjj4waNSoLFy6s9xzLly/PXXfdlfPOOy8HHHBAOnfunO222y5HHnlkbr755qxdu7YRLwEAUAkiFoBmr7q6Oscdd1yuueaarFixImeccUZ69OiRcePGZdCgQVmwYEG95vnOd76Tj33sY7n77rvTqVOnnHbaaTniiCMya9asXHLJJTn22GOzatWqRr40AMCWELEANHvf+ta3MmXKlAwePDjz58/P3XffnWnTpuWGG27I4sWLM2rUqHrN06VLl1xxxRV55ZVXMn369PzP//xPHnvssfzxj3/M3nvvncmTJ+ff//3fG/nSAABboqooiqKpFwEA72Xt2rXZZZddsnz58syYMSMDBw6sNT5gwIDMnj0706dPz6GHHrrZ3+enP/1pzjvvvOyzzz558cUXN3ue5avW5JBrfp3XvntBkmTpwheyXYe2mz0fAFCbR2IBaNYmT56c5cuXp1evXhsEbJKcddZZSZIJEyZs0fcZMGBAkuS1117bonncNQwAjUvEAtCszZo1K0kyaNCgOsdrttfst7n+/Oc/J0l22223LZrnf6uqqqrofACwrROxADRrr7zySpJkr732qnO8ZnvNfpvr5ptvTpKcccYZWzQPANC42jT1AgBgY1asWJEk6dSpU53jnTt3rrXf5rjjjjvy6KOPZocddshXv/rVBh174IEH1vq6aNspOenrm70WAGDjPBILQLNW8/6D7/W03C19f8Inn3wyF198caqqqvL9738/e+yxxxbNBwA0Lo/EAtCsbbfddkmSlStX1jle87muXbp0afDcs2fPzogRI7JmzZrccsstOfPMMxs8x9y5c2t9vWzlmgy89tcNngcAqB+PxALQrO29995JkoULF9Y5XrO9Zr/6WrBgQU488cQsX748X//613PhhRdu2UIBgK1CxALQrNV89M2MGTPqHK/Z3r9//3rP+dprr+X444/PokWLcvHFF2fMmDFbvlAAYKsQsQA0a0OGDEnXrl2zYMGCzJw5c4Px8ePHJ0lOPfXUes23bNmynHjiiXnxxRfz6U9/OjfeeGNF1wsANC4RC0Cz1q5du4wePTpJMnr06FqvjR07dmxmz56doUOH5vDDD1+//bbbbku/fv1y+eWX15pr1apV+dCHPpQ5c+bknHPOyZ133ulzXAGgZLyxEwDN3pVXXplHH300U6ZMSe/evTNs2LC8/PLLmTZtWrp165Zx48bV2n/JkiWZN29eXn/99Vrbv/a1r2Xq1Klp3bp12rRpk8985jN1fr8f/OAHjXVRAIAtJGIBaPY6dOiQJ554Itddd13uuuuuPPDAA9lxxx1z/vnn59prr02PHj3qNc+yZcuSJOvWrctdd931nvuJWABovqqKLf2APQBgvZqP2HntuxckSd58dUG6tHefMQBUitfEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAKggH74OAI1LxAJAI6pq6gUAQAsjYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAqKCiKJp6CQDQoolYAGhEVVVNvQIAaFlELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAFVQ09QIAoIUTsQDQiKpS1dRLAIAWRcQCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAFBBRdHUKwCAlk3EAkAjqqpq6hUAQMsiYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAAABKQ8QCAABQGiIWAACA0hCxAAAAlIaIBQAAoDRELAAAAKUhYgEAACgNEQsAAEBpiFgAqKAiRVMvAQBaNBELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFoBSqK6uzpgxY9KnT5906NAhe+yxR0aNGpWFCxc2eK7ly5fnkksuSc+ePdO+ffv07NkzF198cZYvX175hQMAFSViAWj2qqurc9xxx+Waa67JihUrcsYZZ6RHjx4ZN25cBg0alAULFtR7rqVLl+aII47IzTffnDZt2mTEiBHZbrvtcsstt+Twww/P0qVLG/GSAABbSsQC0Ox961vfypQpUzJ48ODMnz8/d999d6ZNm5YbbrghixcvzqhRo+o915e+9KU8//zzGTlyZObNm5e77747c+bMyYUXXpgXXnghl156aSNeEgBgS1UVRVE09SIA4L2sXbs2u+yyS5YvX54ZM2Zk4MCBtcYHDBiQ2bNnZ/r06Tn00EM3OteiRYuy5557pnXr1vnLX/6SXXfddf3Y6tWr06NHj7z55pt59dVXa401xBt/r84R33wsr333giTJ317/czq0bb1ZcwEAG/JILADN2uTJk7N8+fL06tVrg4BNkrPOOitJMmHChE3O9fDDD+fdd9/N8OHDN4jU9u3b57TTTsu6devy8MMPV2bxAEDFiVgAmrVZs2YlSQYNGlTneM32mv221lwAQNNo09QLaEz/9ZsX8u67ni0NUGa/Wtgq2w8+Jyv2HpLbHn9+g/HX39o+2w8+J8+13qPO8X82bcWO2X7wOXm160F17vun9Mj2g8/JtL/vuMm53sviv6/erOMAgPrZ7NfEnn766Q16N8im8MIbK+IVvwA0hbXLX0+SvK9P71RVNfFiAKCZ6dWrV37xi19s1rGeTgwAjaYQsM3QggULmv0d8dsy10/z5vpp3raV66dFvzvxpfc8k5//YmKS5NRTT2ni1VCXiRMfTOL6aa5cP83btnL9zHh6Rp577rn069cvgw7d8LWsy5Yty8MPPZwdd9oxJ5988kbn+u1vf5uFf1mYQw87NH379t1gfOHChfntk79Njx49Mmz4sC1a9//5/ImpWrsqq1et2KJ5qLwDDzwwSTJ37twmXgl1cf00b66f5m1buX5adMQm284VWVaun+bN9dO8bSvXz0033ZQvfelLOfvss3PPPfdsMP7ggw/m1FNPzYgRI3L//fdvdK5LLrkkN998cy677LL853/+5wbjt99+e0aPHp1LLrkkN9544xatu0OHDkmS6urqLZqHyttWzp2ycv00b66f5m1buX48nRiAZm3AgAFJkhkzZtQ5XrO9f//+W3UuAKBpiFgAmrUhQ4aka9euWbBgQWbOnLnB+Pjx45Mkp5566ibnOumkk9KqVatMmjQpb7zxRq2x1atXZ8KECWnVqtUmn5YMADQdEQtAs9auXbuMHj06STJ69OisXLly/djYsWMze/bsDB06NIcffvj67bfddlv69euXyy+/vNZcu+++ez760Y9mzZo1ueCCC/LOO++sH/vyl7+cxYsX57zzzstuu+3WyJcKANhcLfpzYgFoGa688so8+uijmTJlSnr37p1hw4bl5ZdfzrRp09KtW7eMGzeu1v5LlizJvHnz8vrrr28w10033ZSpU6fmvvvuS79+/XLYYYdl7ty5mTNnTnr16rXFr4UFABpXi39jJwBahrfffjvXXXdd7rrrrvzlL3/JjjvumJNOOinXXnttevToUWvfr3/96/nGN76R888/Pz/4wQ82mGvZsmUZM2ZMHnjggfz1r3/NrrvumjPOOCPf+MY3stNOO1VkvdvKm2sAwNYmYgGgEYhYAGgcXhMLAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0ShWxK1euzI9//ONceOGFOeKII9K+fftUVVXl+uuv3+SxCxcuzKhRo7LHHnukQ4cO6dOnT66++upUV1dv1lr+9Kc/5eyzz0737t3TsWPHHHzwwbnxxhvz7rvvbtZ8LdnRRx+dqqqqjf5r1ar+P4o/+MEPNjrXRz7ykUa8NC3Pb37zm43+93z/+9+/WfNOnDgxRx11VLp27Zrtt98+Rx11VCZOnFjh1bd8zz33XP7jP/4jxx13XPbee++0b98+u+22W0aOHJlJkyY1eD7nz+aprq7OmDFj0qdPn3To0CF77LFHRo0alYULFzZ4ruXLl+eSSy5Jz5490759+/Ts2TMXX3xxli9fXvmFt3CrVq3KAw88kM985jPp379/tt9++3Tu3DkDBgzINddckxUrVjRovn322Wej58dzzz3XSJekZdvU7YBHHnmkQfM5hypnU7cBav5dc8019ZrPObR5nn766Vx//fUZOXJk9txzz1RVVaVDhw6bPO5HP/pRjjjiiHTp0iU77bRTPvShD2XKlCmbtYZ33303N910Uw4++OB07Ngx3bt3z9lnn51nn312s+ZrbG2aegEN8fzzz+eTn/xkg49bsGBBBg8enMWLF+eggw7KsGHDMn369Fx77bV59NFH88QTT6R9+/b1nm/q1Kk57rjjsmrVqhxxxBHZZ5998tvf/jaXXnppfve73+Xee+9NVVVVg9fZUp100knZZ5996hx7+umnM2fOnAwbNqzB8w4YMCCHHHLIBtuPPPLIBs9F0qtXrwwdOrTO7Q11yy235OKLL06bNm3ywQ9+MO3bt8+vfvWrnHbaabn55ptz0UUXVWLJ24QPfvCDefXVV7P99tvnyCOPzODBg/Pss8/m/vvvzwMPPJCxY8fmkksuafC8zp/6q66uznHHHZcpU6Zk9913zxlnnJGXXnop48aNy8SJE/P73/++3ufJ0qVLM3jw4Dz//PPZb7/9MmLEiMydOze33HJLHnrooUydOjXdunVr5EvUctx111357Gc/m+Qfn8t70kkn5W9/+1umTJmSMWPG5Kc//WmefPLJ7LLLLg2a9/zzz69ze9euXbd4zduyD3/4w+nSpcsG2/fcc896z+EcqqzddtvtPX/e161bl//+7/9OkgbfTnMONcy1116bn//85w065tJLL82NN96Yjh075oQTTkh1dXV+/etf51e/+lXuvffenHnmmfWeqyiKnHvuuRk/fnx22GGHnHLKKVmyZEnuu+++PPjgg3niiSea3+2DokReeOGF4jOf+Uzx//1//18xY8aM4mtf+1qRpLjuuus2etzw4cOLJMVFF120ftvatWuLM888s0hSXH311fVew9q1a4tevXoVSYqxY8eu3/73v/+9GDx4cJGk+P73v9/wC7eNOuKII4okxZ133lnvY8aNG1ckKcaMGdN4C9uGPPHEE0WS4vzzz6/IfPPmzSvatGlTtG/fvpgyZUqt7d26dSvatGlTzJ8/vyLfa1tw/PHHF3fddVexevXqWtvvuOOOIknRunXrYu7cufWez/nTcFdddVWRpBg8eHDx97//ff32G264oUhSDB8+vM7jDjjggOKAAw6ote0Tn/hEkaQYOXJksXbt2vXbL7zwwiJJ8clPfrJxLkQL9cMf/rD4whe+sMHvlNdee60YOHBgkaT46Ec/Wu/5evbsWZTsplEpHHXUUUWS4sUXX9ziuZxDW89DDz1UJCl69OhRrFu3rl7HOIc2z/XXX19cffXVxYQJE4pFixYVSYr27du/5/6PPfZYkaTo1q1brd9/U6ZMKdq1a1d07dq1ePPNN+v9/b/3ve8VSYrevXsXixYtWr99/PjxRZKiV69etc635qDUP2VjxozZZMQ+9dRTRZJil112Kaqrq2uNLVq0qGjbtm2x4447FmvWrKnX97znnnuKJMWAAQM2GJsxY0aRpDjooIMadDm2VfPnz19/ki5fvrzex7kRXlmVjtgLLrigSFJcfPHFG4yNHTu2SFKMHj26It9rW3fCCScUSYqvf/3r9T7G+dMwa9asKXbYYYciSTFjxowNxvv3718kKaZPn77B2P+O2Ndff71o1apV0bZt21o3EoqiKKqrq4vu3bsXrVu33mCMzTNlypT1f2P+951A78UN8MZRqYh1Dm1d5513XpGk+OpXv1rvY5xDlbGpiP3Qhz5UJCluvPHGDcYuuuiiIknxne98p97f74ADDiiSFPfff/8GY6effnqRpBg/fny959saSvWa2M1R8xq80047bYOnDO+6664ZNmxYli1blt/97ncNmu+ss87aYGzgwIHZb7/9MmfOnLz00ktbtvBtQM1TVE4//XRPL2lBNnaOnH322UmSCRMmbNU1tVQDBgxIkrz22mtNvJKWa/LkyVm+fHl69eqVgQMHbjBe83Nen5/phx9+OO+++26GDx+eXXfdtdZY+/btc9ppp2XdunV5+OGHK7P4bVzN+bF69eosXbq0iVdDJTiHtp6VK1euf3rrxz/+8SZeDf+suro6jz32WJK6b2s15O9Skrz44ot59tln07Fjx5xyyilbPN/WUqrXxG6OWbNmJUkGDRpU5/igQYPy+OOPZ9asWTn66KMrMt+f//znzJo16z1fB8o//OQnP0my+b8cn3766Vx22WX529/+lt122y3HHntsjjrqqEoucZvy/PPP5/LLL8/SpUuz8847Z+jQoTnppJMa9KZby5cvzyuvvJIkdd7g32uvvbLzzjvn5ZdfzltvveXOiy305z//Ock/XtPUUM6f+qnP7/x/3m9L5/r+979fr7nYtJrzo23bttlpp50adOy3v/3tLFiwIO3bt8+BBx6YM888M927d2+MZW5Tvve972Xp0qVp1apV+vTpkxEjRmTvvfeu9/HOoa3nZz/7WVauXJmBAwfmwAMPbPDxzqHG89xzz2X16tXp3r179tprrw3Ga86P2bNn12u+mvPloIMOStu2bd9zvuZ2XrX4iK25QV3XlfzP22v229rzbat+//vfZ8GCBenWrVtOPvnkzZpj4sSJtd7t9pprrslRRx2Vu+++e4N7aNm0KVOmbPCOdgcffHDuu+++9O7du15z1Pzc77jjjuncuXOd++y1115ZsmRJXnnllRx88MFbtuht2IIFC9b//J9++ukNPt75Uz+V/J3v78fWdfPNNyf5x5sLNuTNG5Pky1/+cq2vv/SlL+WWW27JZz7zmYqtb1v07//+77W+/rd/+7dcddVVueqqq+p1vHNo66l5ttwnPvGJzTreOdR4NnUedO7cOTvssEOWLVuWv//979luu+22aL7mel61+KcT17y9fqdOneocr7mhXd+34a/0fNuqH//4x0mSj3zkI3Xe67Mxu+++e77+9a9n5syZeeutt7Jo0aL84he/SL9+/fLkk0/mlFNOybp16xpj2S1S165dc9lll2Xq1KlZunRpli5dmsceeyzvf//788c//jHHH3983nrrrXrNtanzI3GOVMI777yTT33qU1m9enXOPffcHHroofU+1vnTMJX8ne/vx9bz0EMP5Xvf+17atm2ba6+9tt7HnX766fnZz36Wl19+OatWrcqcOXNy6aWXZvXq1fmXf/mXPPDAA4236BZs+PDh+fGPf5wFCxZk1apVmTdvXr75zW+mTZs2ufrqq9ff4bApzqGtY9GiRXnsscfSunXrfPSjH23Qsc6hxlfp21plPa+26iOxZ511VubMmdOgY2o+/2hzFUWRJO/5kTc14w1V6fmas0pfb2vXrs0999yTZPPu4TvxxBNz4oknrv96++23z2mnnZZjjjkmhx56aJ5++uncfffdOe+88xo8dxlt6fUzcODADZ76e+yxx2by5Mk55phjMmnSpNx+++254oorNjnvps63f95nW9EYv/cuvPDCTJ48Ofvtt1/+67/+q0FzO38appJ/Qxrr7xG1/elPf8rHP/7xFEWRb3/72+tfG1sft9xyS62vDzzwwNxwww3p27dvPv/5z+crX/lKRowYUeEVt3z/+zNG+/TpkyuuuCKHHXZYTjzxxIwZMyaf+9zn0rFjx43O4xzaOu66666sW7cuJ510UoNfruIcanyVvq1Vn/mao60asS+99FLmzZvXoGNWrVq1Rd+z5iH0lStXbnT+uj63rC5dunTJsmXLKjZfGVT6env44YezdOnS9O7du6KfOdWlS5dcdNFFGT16dH75y19uMzfCG+u8at26db7yla9k0qRJ+eUvf1mviN3U+fbP37slnSMbU+nr55prrskdd9yRXXfdNb/85S8b/Fq/97Ktnj+bUsm/IZX+e8SGFi5cmJNOOinLli3LpZdemosvvrgi8/7Lv/xLrrrqqsyfPz8vvvhi9t1334rMu6074YQTcthhh2X69OmZOnVqjjnmmI3u7xzaOrb0qcR1cQ5VTqVva21qvprtze282qoRO3369K357ZIke++9d2bOnJmFCxfWOV6zvb5vLLD33ntn2bJlWbhwYfr377/F85VBpa+3ml+OjfFudzWv3Xz99dcrPndz1ZjnVUP/e9b83Nfc0VPX62Jb4jmyMZW8fm6//faMGTMmXbt2zSOPPJL999+/YnMn2+b5syk1P6eV+BtSybnY0JIlS3L88cfnlVdeyac//el85zvfqdjcrVq1Sq9evfLGG2/k9ddfdwO8gnr37p3p06fX6/eOc6jx/elPf8rMmTPTpUuXij5i6hyqnE2dBytXrszy5cuzww47bPL1sPWZr7meVy3+NbE1TyOaMWNGneM12+sK0q0x37bmb3/72/q36G6MiF22bFmS5ndvUVk19L/nDjvssP6X3MyZMzcYX7hwYZYsWZK9997bOxM30E9+8pNceOGF6dSpUx588MEccsghFf8ezp8NVfJ3vr8fjefvf/97Tj755Dz33HMZOXJk7rzzzoo/Nc750Tga8t/VOdT4at6zZOTIkRt9zeXmcA5VRt++fdO+ffssXry4zvDc3LaZM2dO1q5du8XzbS0tPmJrPu9owoQJWb16da2xv/71r5k0aVK6du2aoUOHNmi+8ePHbzA2c+bM/PnPf84BBxzgHqb3MH78+FRXV2fIkCHZb7/9Kj7/fffdlyQNeqMb3tvm/Pfc2Dly7733JklOPfXUCqxu2/HQQw/lU5/6VNq2bZv7778/Q4YMaZTv4/zZ0JAhQ9K1a9csWLCgzjtman7O6/MzXfORVZMmTcobb7xRa2z16tWZMGFCWrVqtdnv2L6tWr16dc4444xMnz49J554Yn7605+mdevWFf0ec+fOzbx589KpU6f069evonNvyxYvXpxJkyYlee+PzflnzqHGVRRF7rrrriSVfSpx4hyqpI4dO+bYY49NUvdtrYb8XUqSfffdN+973/vy9ttv58EHH9zi+baaosTGjBlTJCmuu+66je43ZMiQIklx8cUXr9+2du3aYuTIkUWS4sorr9zgmE984hNF3759i5/97Ge1tq9Zs6bYd999iyTF2LFj129fsWJFMXjw4CJJ8d3vfnfLLlgLdswxxxRJijvuuGOT+/bt27fo27dvsXDhwlrbb7755uLvf/97rW1r1qwpvv71rxdJio4dO25wDO/tjjvuKJYsWVJr27vvvlvccccdRZs2bYqqqqpi+vTpGxz3XtfPc889V7Ru3bpo37598fvf/3799vnz5xfdunUrWrduXTz33HONc2FaoMmTJxcdO3Ys2rRpU9x///31Ps75Uzlf+9rXiiTFBz7wgWLFihXrt99www1FkmLo0KG19r/11luLvn37FjvvvHNxwAEH1Br72Mc+ViQpPvzhDxdr165dv/2iiy4qkhQf//jHG/fCtDDvvPNOceaZZxZJimHDhhUrV67c5DE1189Xv/rVWtsfeeSROn/XzZo1q3jf+95XJCkuuuiiiq19W/H73/++ePzxx4t333231vYXX3xx/e2z008/vdbYe11HReEcakxPPvlkkaTYY489inXr1r3nfs6hxpekaN++/XuO//rXvy6SFN26dSvmz5+/fvuUKVOK9u3bF9tvv32xdOnSWsdMmzat6Nu3b3HsscduMN+dd95ZJCl69+5d/PWvf12//b777iuSFPvuu2+xZs2aClyyyildxI4YMaI48sgjiyOPPLLYc889iyRFjx491m8bMWLEBsfU3HhOUhx88MHFueeeW+y3335FkuLII48s3n777Q2OOeqoo4okxbhx4zYY+93vfld07Nhx/fHnnHNOsfvuuxdJihEjRmz0xN+WLVy4sGjVqlXRrl274s0339zk/kmKJMWLL764wfaOHTsWhx56aDFy5MjiQx/6ULHHHnsUSYoOHToU9913XyNdgpapZ8+eRdu2bYsBAwYUp59+enH66aevv6OmVatWxS233FLnce91/RRFUYwdO7ZIUrRp06Y4+eSTizPOOGP9OfPPd/6waTvssMP6PyDnn39+nf/uvPPODY5z/lTO22+/XRx55JFFkmL33XcvzjnnnPVfd+vWrXj++edr7V9zB+tee+1VnHbaabXGFi9eXPTq1atIUvTq1as499xzi4MOOmj914sXL96aF630brrppvU/62eeeeZ7niP//N+15vo5//zza81Vs71nz57FscceW5x77rnFEUccUbRp06ZIUhx11FH1imRqGzdu3Ppz56ijjirOPffcYsiQIUWHDh2KJMWBBx5Y60ZzUbz3dVQUzqHG9NnPfrZIUlx22WUb3c85VHkTJ05c3zI1f1+qqqpqbZs4cWKtYy6++OIiSdGpU6fijDPOKE4++eSiTZs2RatWrYrx48dv8D2eeOKJ9dfP/7Zu3br1dwjuuOOOxVlnnVUcffTRRVVVVdGhQ4fid7/7XWNd9M1Wuojt2bPn+j9Ydf2r64opiqJ45ZVXik996lPFbrvtVrRr167o1atXceWVVxarVq2qc/+NRWxRFMWcOXOKD3/4w0W3bt2K9u3bFwcccEDxne98p3jnnXcqdElbnv/4j/9Yf0OjPt7rRvjVV19dHH/88UWPHj2Kjh07Fh06dCj233//4vOf/7xH+DbDLbfcUpx66qnFvvvuW3Tu3Llo165d0bNnz+LjH/948dRTT73ncRuL2KIoil/84hfFsGHDii5duhRdunQphg4dWvz85z9vpEvRcm3s913Nv7pu6Dl/KmvVqlXFVVddVfTq1ato165dseuuuxbnn39+8corr2yw78ZugBdFUbz55pvFhRdeWPTo0aNo165d0aNHj2L06NEb3GvOptX8t97Uv38+D97r+pkyZUoxatSo4uCDDy66detWtGnTpthpp52Ko48+urjzzjv9fd9Mzz77bPGFL3yhGDRoUNG9e/eiTZs2RdeuXYv3v//9xQ033FDn7TDn0NZXXV1d7LjjjkWSYtasWRvd1zlUeTV39mzsX11NMm7cuOLQQw8tOnXqVHTt2rU48cQTi0mTJtX5PTYWsUXxj2e23HDDDcWBBx5YdOjQoejWrVsxcuTIYs6cORW8pJVTVRQ+VAsAAIByaPFv7AQAAEDLIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAkCFPfjgg6mqqsro0aObeikA0OKIWACosD/84Q9JksMPP7yJVwIALY+IBYAKE7EA0HhELABUyPXXX5+qqqo89NBDSZIDDzwwVVVVqaqqyoknntjEqwOAlqFNUy8AAFqKXXbZJWeddVbGjx+fXXfdNSeddNL6seOOO64JVwYALUdVURRFUy8CAFqKJ598MkcffXQ++clP5oc//GFTLwcAWhxPJwaACnrmmWeSJIccckiTrgMAWioRCwAVJGIBoHGJWACooJkzZyYRsQDQWLwmFgAqZO3atenSpUt23333vPTSS029HABokTwSCwAVMnfu3KxZs8ajsADQiEQsAFTIc889lyQ56KCDmnglANByiVgAqJB169YlSVatWtXEKwGAlstrYgGgQl544YUccMABKYoiJ5xwQrp3755OnTrlv/7rv5p6aQDQYohYAKig+++/P9dee23mz5+flStX5sgjj8zUqVObelkA0GKIWAAAAErDa2IBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAaYhYAAAASkPEAgAAUBoiFgAAgNIQsQAAAJSGiAUAAKA0RCwAAAClIWIBAAAoDRELAABAafz/JAlOfKBnVp0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sympy.plot(sympy.Heaviside(t));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Look at the difference between $f$ and the inverse laplace transform we obtained, which contains the unit step to force it to zero before $t=0$." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEkAAAAYCAYAAAC2odCOAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD6ElEQVRYCd2Y7VEbMRCGDZMCSOgAOiBJBYEOgFQA7gDG//yPIR1ABwx0AKmAQAehgzB0QN5nrVV0sk74GHw41oy8+tgvvVqtdF55fn4ezLOMx+M16R8FGxuBHmj8KbWr/p36e6IP6fgitD/04MSpFj50O2qfqQ0gm8kYQG4tIkD4uOqOzpEeavHbif5TtTc0tpWMMX+f9Beq2QdIRNGv0qoFFGABGnVAWzUFryT2qjHp9aNelS/xzf24yeh55hWgPWjcI+dYbSLpRPQq432TrvQeYTPUl3SycbuqP5yxj0hyWwMZJkp2VT/HwUmD8ZtsbKor+SNVom3miBMv9tZFZ9oA8ZkfoofuwEqX202CLMaOhitooUPxNm4p9Ql3kjY3WLzZ1CaKLkU/tuiyYc1fB75ztUn0d6Ix+ZdkA99P0XxTXKfpUWdHPLm/XC7fNP7U6bhJgCOyYxY6/EgOgDhWJhv6A1Eci1GkPk4T7n4UzYr6nrPs6Kr/pGrJP+c1gX8/yLExbYUNwrfHAgNyyA/nftxYjAxh8ExtrnlAOVZ1x4iGW1XKSDXfUfjJKaUIRnet7MtenhNTfjaN/Bgj2yeDHPJrnSLJFXSkhK2HdRSVcX87ASDHkxxwIZo7bMBpPOYstdFH+TQh07/iIRc1AJ/mGhBJtVyF/H4DpGAcp/4EhewyxyR3PEy/TCT7Uq7haDlgDYXBHxZL5KXlS+jUQCBKIrAuLJ0Agz2AJhKJ7kvRW9F4o6lPQX4nghSE2VUSq+UEUUId0HInNdRL8RsmXyx+UWogASTraRStCV03ooC/LVrLsb/hMZDECKLcHoS9AaQ2BdQZf6/yPRgeya/UBxZI8q6BRKR43ktlvQ046Vp9PKXIb3gkOeJrMkySpKyrXquf76JN9vRDxLDre25PbRYPSCc+1kLJV7U0QQDU8hFq2YSYuE1ADuRnEsZ3KQEMbOeRvB8cqt1aVZ+Dbj89NV4DejXh8Gs4GVqIZn4kyI88KGtRguMcFaKuVAiKgXTEUxKAy3mRf3SQCCuO11SRMKHde5HdKRCCL+zuLBcJayJaSqWRj4LeEi+2Hjwn2csy1SZBUGS89IhLWefZJmdYNCT+2KfCDEaJwK8tfLZ45oJeXu+l/MTnzL2BJAb7HhIFEK49Ckm8+H6ZTPfyeyArfMyyy7zZpr6xKl5caI73T6kQiXwB2BNDtC0XcyyHnT5wS9YWeUyLZ8Pju6+Lr2FjuN03PSd1kf+feDkZrz0NRJulmqUGSVHAM4F8U0rKrZsd+JGzZ8ZSgxRQ4CHqj+VWYLIJ+GMELnVO8oWHyGj8JetzORUvXxxXovGT5y9zoXCURO9LFQAAAABJRU5ErkJggg==", "text/latex": [ "$\\displaystyle e^{- 2 t} \\theta\\left(t\\right)$" ], "text/plain": [ " -2⋅t \n", "ℯ ⋅θ(t)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invL(F).subs({a: 2})" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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WDjdd999Wr58udLS0jR+/Hg98cQT2rBhgxoaGtq8vq6uTmvWrNHixYs1ZswYTZgwQR9//LHuv//+LqtxRlKsAszNr/opqqrX5gMlHZ4jPT1dmZmZCgkJUXJysqdLBAAAANCF2NgJreTn5+uRRx7Ra6+9prKyMplMJgUGBmrw4MHq3bu3wsPDVV5eruLiYu3fv1+NjY1yOByKjIzU/Pnzde+993r0HayuGzu1uP7FNfpuT5EkaVJYqbb/c5Euv/xyLV682HnNZ599pujoaE2YMKHVfNu2bdM111yjnTt36o477tDTTz/dqfrY2AkAAADoXrxiB07Dhw/XL3/5Sz399NN69NFH9c477+jDDz/Ut99+q127dp1wfVxcnKZPn66LLrpIV111lYKCgjpdw0cffaRFixa1OlZfX68zzjjDOZ5+433O7zOrbMrMzDzh2dbVq1froYce0qBBg5SYmKiYmBjt27dPmzZtUmNjo84555xWoRcAAACAbyDEwikrK0vbtm2TJAUHB2vfvn1auHCh3n77bRUUFCg/P19lZWWKjIxUbGysRzuuLQoKCrR27dpWxxwOR6tj19xUJClKklTuCFZAn/4nzDNz5kzl5ORo/fr12rp1q8rKyhQREaFp06bp+uuv1/z582WxdPz1PAAAAACMxXJiOIWGhurSSy/Vm2++Kal5F9/58+frH//4h8GVneiHT6/U97nlkqRfz0rWrTMSDamD5cQAAABA92JjJzgNGzZM3377rcrKypzHvPV3HK67FP/n+zwDKwEAAADQnQixcLr++ut16NAhDR8+XDfddJMkqaioqFWo9RauIXZzTqkKKuoMrAYAAABAd2E5MZwcDod+97vf6dlnn1VVVZVMJpPz3IABAzR27FjnV1pamoYMGWJorWc9+pUOlzXvWvynH43R1ZMGdnsdLCcGAAAAuhchFieora3Vd999pwsuuMD5ap3vv/9edXXN3c6WcBsREaHU1FSNHTtW48aN0w033NCtdd7/wQ69tnq/JOn8kbF6cd6kbr2/RIgFAAAAuhshFidlNpt1ww036KWXXlJTU5O+//57bdmyRVu3bnX+WVTU/L5Wk8mkpqambq1v5e4C/eQf6yRJtgCzNt9/gUKs3bvhNiEWAAAA6F68Ygcn9dVXXykgoPlHxGKxaMyYMRozZox+8pOfOK85ePCgM9B2tylD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aMeOHR36zGuvvabJkyd74vZAt2nZB81kMp3yPADAGDt37tSPf/xjORwOPfbYY85nYwFf8cUXX0iSSktLtX37dj388MOaMWOG/vCHP/AGD3i1nJwc/f73v9c555yjG264oUvv5ZEQm52drczMzA59prq62hO3BrpVeHi4JKmqqqrN8y0/12FhYd1WEwCg2cGDBzVr1iyVlJRo4cKFuvPOO40uCXBbr169NH36dH388ceaOnWq7rvvPl144YWaNGmS0aUBbbrttttUX1+vv/3tb11+L4+E2A0bNnhiGsDrDRw4UFLzfyi1peV4y3UAgO5RWFioCy64QAcOHND8+fP1+OOPG10S4BGBgYG6+uqrtXHjRi1fvpwQC6/14YcfqlevXrr11ltbHW95fd+BAwc0Y8YM57WdafrwTCzQAS3L0jZt2tTm+Zbjqamp3VYTAPR0FRUVmj17tjIyMjR37ly98MILJ33sA/BF0dHRkqSCggKDKwFOrbS0VCtWrGjzXE1NjfNcY2Njp+7DFmdAB5x11lmKjIxUVlaWNm/efML5d999V5J08cUXd3dpANAj1dXV6bLLLtOGDRs0c+ZMvfnmm853agL+ouU//BMTEw2uBDg5h8PR5te+ffskSUlJSc5jvXr16tS9CLFAB1itVi1YsECStGDBglbPxj755JPatm2bpk2bxlIfAOgGTU1Nuvbaa/X1119r+vTpev/992W1Wo0uC+iwlStX6q233jqhO9XQ0KBnn31Wr7/+uoKDg3X11VcbVCHgXbxmOfHll1+u3NxcSceeK3zuuee0bNkySVJ8fLyWLl1qVHmA0+9//3t98cUXWrVqlYYPH67p06dr//79Wrt2raKiovTyyy8bXSJwWh999NEJrx6pr6/XGWec4Rzfd999uuiii7q7NKDdlixZ4vxvg+joaN12221tXvf44487l2MC3igrK0vz589XdHS0JkyYoKioKBUWFmr79u3Kzc1VUFCQXnnlFQ0YMMDoUgGv4DUhdvPmzdq/f3+rYzk5OcrJyZEkDRo0yIiygBMEBQXp66+/1uLFi/XGG29o2bJl6t27t+bNm6dFixbx/2DgEwoKCrR27dpWxxwOR6tjPHsFb1dSUuL8/lS/6H7wwQcJsfBq55xzjn77299qxYoV2rZtmwoLC2W1WjV48GBdccUVuuOOOzRs2DCjywS8hsnBiy0BAAAAAD6CZ2IBAAAAAD6DEAsAAAAA8BmEWAAAAACAzyDEAgAAAAB8BiEWAAAAAOAzCLEAAAAAAJ9BiAUAAAAA+AxCLAAAAADAZxBiAQAAAAA+gxALAAAAAPAZhFgAAAAAgM8gxAIAAAAAfAYhFgCALvbRRx/JZDJpwYIFRpcCAIDPI8QCANDF1q9fL0maNGmSwZUAAOD7CLEAAHQxQiwAAJ5DiAUAoIs8+uijMplM+vjjjyVJKSkpMplMMplMmjlzpsHVAQDgmwKMLgAAAH8VGxurK664Qu+++6769u2rWbNmOc+dd955BlYGAIDvMjkcDofRRQAA4K9WrFihGTNm6Kc//aleffVVo8sBAMDnsZwYAIAutGXLFknS2LFjDa0DAAB/QYgFAKALEWIBAPAsQiwAAF1o8+bNkgixAAB4Cs/EAgDQRRoaGhQWFqb4+HhlZ2cbXQ4AAH6BTiwAAF0kPT1d9fX1dGEBAPAgQiwAAF0kIyNDkjR69GiDKwEAwH8QYgEA6CJNTU2SpOrqaoMrAQDAf/BMLAAAXWTPnj0aNWqUHA6HLrzwQsXExCgkJETPPfec0aUBAOCzCLEAAHShpUuXatGiRdq1a5eqqqo0ZcoUrVmzxuiyAADwWYRYAAAAAIDP4JlYAAAAAIDPIMQCAAAAAHwGIRYAAAAA4DMIsQAAAAAAn0GIBQAAAAD4DEIsAAAAAMBnEGIBAAAAAD6DEAsAAAAA8BmEWAAAAACAzyDEAgAAAAB8BiEWAAAAAOAzCLEAAAAAAJ9BiAUAAAAA+AxCLAAAAADAZxBiAQAAAAA+gxALAAAAAPAZhFgAAAAAgM/4/xiycfOsaImzAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = sympy.plot(f.subs({a: 2}), invL(F).subs({a: 2}), \n", " xlim=(-1, 4), ylim=(0, 3), show=False)\n", "p[1].line_color = 'red'\n", "p.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reproducing standard transform table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see if we can match the functions in the table" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[ 1, \\ t, \\ e^{- a t}, \\ t e^{- a t}, \\ t^{2} e^{- a t}, \\ \\sin{\\left(\\omega t \\right)}, \\ \\cos{\\left(\\omega t \\right)}, \\ 1 - e^{- a t}, \\ e^{- a t} \\sin{\\left(\\omega t \\right)}, \\ e^{- a t} \\cos{\\left(\\omega t \\right)}\\right]$" ], "text/plain": [ "⎡ -a⋅t -a⋅t 2 -a⋅t -a⋅t -a⋅t -a⋅t ⎤\n", "⎣1, t, ℯ , t⋅ℯ , t ⋅ℯ , sin(ω⋅t), cos(ω⋅t), 1 - ℯ , ℯ ⋅sin(ω⋅t), ℯ ⋅cos(ω⋅t)⎦" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "omega = sympy.Symbol('omega', real=True)\n", "exp = sympy.exp\n", "sin = sympy.sin\n", "cos = sympy.cos\n", "functions = [1,\n", " t,\n", " exp(-a*t),\n", " t*exp(-a*t),\n", " t**2*exp(-a*t),\n", " sin(omega*t),\n", " cos(omega*t),\n", " 1 - exp(-a*t),\n", " exp(-a*t)*sin(omega*t),\n", " exp(-a*t)*cos(omega*t),\n", " ]\n", "functions" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left[ \\frac{1}{s}, \\ \\frac{1}{s^{2}}, \\ \\frac{1}{a + s}, \\ \\frac{1}{\\left(a + s\\right)^{2}}, \\ \\frac{2}{\\left(a + s\\right)^{3}}, \\ \\frac{\\omega}{\\omega^{2} + s^{2}}, \\ \\frac{s}{\\omega^{2} + s^{2}}, \\ - \\frac{1}{a + s} + \\frac{1}{s}, \\ \\frac{\\omega}{\\omega^{2} + \\left(a + s\\right)^{2}}, \\ \\frac{a + s}{\\omega^{2} + \\left(a + s\\right)^{2}}\\right]$" ], "text/plain": [ "⎡1 1 1 1 2 ω s 1 1 ω a + s ⎤\n", "⎢─, ──, ─────, ────────, ────────, ───────, ───────, - ───── + ─, ─────────────, ─────────────⎥\n", "⎢s 2 a + s 2 3 2 2 2 2 a + s s 2 2 2 2⎥\n", "⎣ s (a + s) (a + s) ω + s ω + s ω + (a + s) ω + (a + s) ⎦" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Fs = [L(f) for f in functions]\n", "Fs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can make a pretty good approximation of the table with a little help from pandas" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "from pandas import DataFrame" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def makelatex(args):\n", " return [\"$${}$$\".format(sympy.latex(a)) for a in args]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
0$$1$$$$\\frac{1}{s}$$
1$$t$$$$\\frac{1}{s^{2}}$$
2$$e^{- a t}$$$$\\frac{1}{a + s}$$
3$$t e^{- a t}$$$$\\frac{1}{\\left(a + s\\right)^{2}}$$
4$$t^{2} e^{- a t}$$$$\\frac{2}{\\left(a + s\\right)^{3}}$$
5$$\\sin{\\left(\\omega t \\right)}$$$$\\frac{\\omega}{\\omega^{2} + s^{2}}$$
6$$\\cos{\\left(\\omega t \\right)}$$$$\\frac{s}{\\omega^{2} + s^{2}}$$
7$$1 - e^{- a t}$$$$- \\frac{1}{a + s} + \\frac{1}{s}$$
8$$e^{- a t} \\sin{\\left(\\omega t \\right)}$$$$\\frac{\\omega}{\\omega^{2} + \\left(a + s\\right...
9$$e^{- a t} \\cos{\\left(\\omega t \\right)}$$$$\\frac{a + s}{\\omega^{2} + \\left(a + s\\right)...
\n", "
" ], "text/plain": [ " 0 \\\n", "0 $$1$$ \n", "1 $$t$$ \n", "2 $$e^{- a t}$$ \n", "3 $$t e^{- a t}$$ \n", "4 $$t^{2} e^{- a t}$$ \n", "5 $$\\sin{\\left(\\omega t \\right)}$$ \n", "6 $$\\cos{\\left(\\omega t \\right)}$$ \n", "7 $$1 - e^{- a t}$$ \n", "8 $$e^{- a t} \\sin{\\left(\\omega t \\right)}$$ \n", "9 $$e^{- a t} \\cos{\\left(\\omega t \\right)}$$ \n", "\n", " 1 \n", "0 $$\\frac{1}{s}$$ \n", "1 $$\\frac{1}{s^{2}}$$ \n", "2 $$\\frac{1}{a + s}$$ \n", "3 $$\\frac{1}{\\left(a + s\\right)^{2}}$$ \n", "4 $$\\frac{2}{\\left(a + s\\right)^{3}}$$ \n", "5 $$\\frac{\\omega}{\\omega^{2} + s^{2}}$$ \n", "6 $$\\frac{s}{\\omega^{2} + s^{2}}$$ \n", "7 $$- \\frac{1}{a + s} + \\frac{1}{s}$$ \n", "8 $$\\frac{\\omega}{\\omega^{2} + \\left(a + s\\right... \n", "9 $$\\frac{a + s}{\\omega^{2} + \\left(a + s\\right)... " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DataFrame(list(zip(makelatex(functions), makelatex(Fs))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More complicated inverses\n", "\n", "Why doesn't the table feature more complicated functions? Because higher-order rational functions can be written as sums of simpler ones through application of partial fractions expansion." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "F = ((s + 1)*(s + 2)* (s + 3))/((s + 4)*(s + 5)*(s + 6))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMAAAAAxCAYAAACMEqa7AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAJy0lEQVR4Ae2d7XEUORCGFxcBABfBmQyMieAgAz4iADLwFb/g3xWXARCBgQzgIriDDEwGxzkD3/vMSoOkbc1o7d0drTyqkvUxGqn7VXerNTsjLy4uLhZWfPXq1aFVv091m+BhE31Midkm6N9EH7VicLAwwuvXr09UfWRc2reqQ8fLpehuBIcZg8Uii8ENNDMMmvRHKt9X+ntYX2tedKKoHxXvKX+e0qk6lPlc6bv02lBZ7avHQTQeigc/T8fK/6Cs+m8hbyq3jsELx+8tpWDyRjx/KcEgUgDdRAd/Kb0X3lxb3tH5XnQx4Uw8SnBb9SsKoPqF6r8q+S13nTZhULvqcRCNTPRbpQ897cq/UR5hf6h8KgAtYsA8IexeARbKY7gwiI+V/6S0DyqvYJC6QAD4tr9jixkR80Dx+WWG0H1YdBiE8dOCPuAJ3krDTnAQ/ZfGQIxAYz/xMKb+WA0wAghAGlrEAPl5Lr4Reh+84r/0FUG6gkGqAE/U2VquQtD5ulm0l7j14HiCt9LxdoXDVTB4IODODJ4QgFuqPwyBbRQDXL1zFzt2xSdlM1gY3PQtdREt+u7LDabw9kRxUMH3CAcE/Whgwi1lbwoD8Q4GtxX74OaPMtbeChEGvQKoJb6kXz6sG/s6DcLy+6+ruKuUjVdW8/obp83AGzwOKoBrM4rD1Bho/McZOLund7oebYRd26YwSPkXz6yKnWuofG6eIwxCBWAzmdOafix1/FmF/klDOGjfqM7MmcgCoLEwikOtGIguhB/Xxz8ZSnltEgPHN3N7XxHF/ydlPChHGIR7AJZMnqpkgwYCXDZuoXUBbHbXtQd4g/6xMIhD5Riw+f0kGv/MMNkkBsgjPCuyKp4qflU+3BiHcEQYhCvAHbUqcmPUOasAYH9Rvn8MF47i87rOqmJZXsZb6Hr0JMPdB0O5Jd41WTvB90O4x0IRDqKvKgxEDzh/H8GtaQyYWPGPAUCOPyq1Ho1HGIQKwP2DQR0CMNaFZ82dUFNWzC25C12zBJx6NJRf6HLWapCWS1wsEuyxfkVvdRiIJh4H3lE6aIxoo1hk5IZwqAUD0XEEnUpDj4QqXCDkkxj9FqByhEHoArE0jFpIDYb/f0Nt/ab5ROXR+9R+6gCN8DgWRnGoCQPRgiG5q7RfMZXHsFjuXmsY4Hrj7qwjfxEGoQKwNFigdQKjQfjFjQ2EL4+6P75tJSmaD49jIYtDbRiIHiyg9doKSmEpe2sYnItP7/KE83rsCtbTvAiD0AX6ppvYRecCy0n0lEgTANDvlELIVOEXNzCMDdHB6x3wOBaGcKgGA2GOsfL7sGheVM+DCsu1bAoD8bniejuZxMq/yMhlhEGoAOyerZ/QVd2FZ/oLsPibDEDglQTTx19e3t5fjetpRSgJbHqw3p+VWs+AaVdC6xAONWHAJhwlsF4nySl6Uxgwz4rIZGgAwGTlXSjV+RBjEL6nrfe+zxSPwrpt5TXOI8WTbfUf9qtxDhXPwrqhPG0Vt46DxpgxmBiDA68WLu1+RUvqtlXEXRlyWTY5LkslvJWGXeEwY7CUgenkILWEskqfFff+azDPF7zAky+Xpi3hMGNwschhkK4AWEgep4U+VanVrLUdvJT4/in9LeEwY7CU6VU5sCyi05ad+OfW+JuqEx8n8HLZ/lrAYcags/5ZOYi+CEtN4FyeEWgdAcsFap3nmb8ZgR6BWQF6KObMdUTghnzE+FiI64jCzPO1RWDeA1zbqZ8ZB4HZBZrl4FojMCvAtZ7+mfmsAugFo8N9h2cTPGyijylx3AT9m+ijVgxMBRDDfPHFu+b7HrJnQpYwVjsOom9ljlSXngnUNAYl86g2WQxWNsECkHf8rY8sCseappkTBt4Bj37uVhll5rVt6xXpLLFqXz0OovE/MXBL0b/+TJ4QnZPaMgZLdrvPItOXHU/Ft8dlkcMgWgHUCABfKl350MAPVHHK9wF8FBMF8cKHISiGF47oulXYIxx+iP5zRVYC+OP710j4VV60jIF4w7rzaSTfgfC5LrKL++6/F1E2j8HN7urPP2jRTl6EE6F8mADxa1nmn6T+zKkPrPxQgKd1XnHeCQ4bwGCd0zNaxQBBx9qHnz9iDKzPX1cwiFYA3bSrMzE1VGexiq0yN1hBjGP9sIJEM6gNStba2aAmr7nKFjEQT7ipzH9kRFXPF2ErJ2RYGPQK4DqztCaHaS31Tx1jY/TA25OxRnuMwxhrXG8NA/Z77O+yxs8AJcIgdIH8MSfGPXGVBsRFmPxsUNGB61PqskVnQsYcRaUiHCrCwH+jzeEA+L5/iLZ+8xdxtjz7Ff4ii5m0obgvGByLVs5pYhV4qohMclYt34eHLpGq+hDJQb8C6DKd9cee9M2TjDrmY2x8Lg7EYoOJD4ZC7DRobCYb7S9dteCNe8bCKA4aswoMxAgu5AfmQZHNH5FzcthfWaE1DOCfcAz/DgdWBRQA98gKEQahAtAZTxWyQZ0iQHyFH1qYDvTsTdu7wJOdMUsWjg5vJQowiENNGIgWfN1zz6TyGAMsXG5VbAYD8eqFnyPiUzn4IAzeB208RKQRBqELdEcXezDDO9K8Op70XEyNz7Kfm+SUXF9GODxovs5Ki3CYGgOLcFcHnxgpnrClq2OLGKQ8AgOPRZERVvPUFYowCBVAbYcDgCri9uB7d8ssZUVWATPoWvTDlG+kepYoJon+ioPaY8X5tdNifKifIsEe6oBrjKs4KQaODowQ54Fy0JMVLGVvBgPxjfsL30NG21rxIwwOAuRYGizQgiadAEx9NihM8Us1fl4fVXekiOWjztqTwBs8joVRHNT/1BjAA9bNmi8meCEav5EmoTUMsO4WBp5ty0hGGIQrAI0tjek6c0L1SCm7bABmcM4H3ekHNX7cjqjgj+p5LQB6+kNig8tkEQwLkKRZ18bEQX2jWJNj4AjmVDRr5WVlTpd9z2NrGOAGR7/4OkZZFVkhLBwiDA48MkqxGPt4NqhnAc0esgbRmZD+JiMdwgHhivYeAhlXborzUfkXqSkt/hfxnBFoCgPxz6sfGL1+xVceGeD3nmeKVogwCFeAU7W2tMl3Qoe4GP65M/Vomenj+5u2nWp8hMBb7M4FUvlv1ad7C4S3hNYhHKrBQPyxF+HEbq8EWDbct19Vd67UCk1hAIPilSdhKQ78T2jLBeSWGIPwzBx9H7yTMzEZU2PN52LOGEwuB6ELhHawlJRYSdpeNWClcpbqqn2n9+Mr98tketEo7wqHGYOlDEwnB+EK4CzzfDbocoVqBgettvP5qBkM0hUAY9jSmZjwg498mVWtJRxmDHJykK4AbhXAYsxngy6txl7jwDyyAljzXFLnVo9mMfgfvmUbBYSL5BIAAAAASUVORK5CYII=", "text/latex": [ "$\\displaystyle \\frac{\\left(s + 1\\right) \\left(s + 2\\right) \\left(s + 3\\right)}{\\left(s + 4\\right) \\left(s + 5\\right) \\left(s + 6\\right)}$" ], "text/plain": [ "(s + 1)⋅(s + 2)⋅(s + 3)\n", "───────────────────────\n", "(s + 4)⋅(s + 5)⋅(s + 6)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle 1 - \\frac{30}{s + 6} + \\frac{24}{s + 5} - \\frac{3}{s + 4}$" ], "text/plain": [ " 30 24 3 \n", "1 - ───── + ───── - ─────\n", " s + 6 s + 5 s + 4" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.apart(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In most cases, sympy will be able to figure out how to do the right thing with most of the functions we use, even the hard ones. Notice the relationship between this inverse Laplace and the expression we obtained above:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\delta\\left(t\\right) - 3 e^{- 4 t} \\theta\\left(t\\right) + 24 e^{- 5 t} \\theta\\left(t\\right) - 30 e^{- 6 t} \\theta\\left(t\\right)$" ], "text/plain": [ " -4⋅t -5⋅t -6⋅t \n", "δ(t) - 3⋅ℯ ⋅θ(t) + 24⋅ℯ ⋅θ(t) - 30⋅ℯ ⋅θ(t)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "invL(F)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.6" } }, "nbformat": 4, "nbformat_minor": 4 }